#define
, #ifdef
, #endif
সি প্রোগ্রামিংয়ে Preprocessor Directives বিশেষ নির্দেশিকা যা প্রোগ্রাম কম্পাইল হওয়ার আগে প্রোগ্রামের কোডে পরিবর্তন বা প্রসেসিং করে। এগুলো প্রোগ্রাম কম্পাইলার দ্বারা সরাসরি প্রক্রিয়া করা হয় এবং সাধারণত #
চিহ্ন দ্বারা চিহ্নিত হয়। Preprocessor Directives কম্পাইলেশন শুরু হওয়ার আগে কিছু নির্দেশনা প্রদান করে, যেমন ম্যাক্রো ডিফিনিশন, কন্ডিশনাল কম্পাইলেশন, এবং ফাইল ইনক্লুড।
এখানে #define
, #ifdef
, এবং #endif
এর ব্যবহার বিস্তারিতভাবে আলোচনা করা হয়েছে।
#define
– ম্যাক্রো ডিফিনিশন#define
প্রিপ্রসেসর ডিরেকটিভটি একটি কনস্ট্যান্ট মান বা এক্সপ্রেশনকে একটি সিম্বোলিক নামের সাথে যুক্ত করতে ব্যবহৃত হয়। এটি ম্যাক্রো ডিফিনিশন হিসেবেও কাজ করে, যেখানে আপনি একটি এক্সপ্রেশনকে একটি নাম দিয়ে রিপ্লেস করতে পারেন।
#define NAME value
এখানে NAME
হলো একটি সিম্বোলিক নাম এবং value
হলো তার মান বা এক্সপ্রেশন যা প্রোগ্রাম চলাকালে ব্যবহার হবে।
#include <stdio.h>
#define PI 3.14159
int main() {
printf("The value of PI is: %.5f\n", PI);
return 0;
}
এখানে #define
ডিরেকটিভটি PI
নামক একটি কনস্ট্যান্টকে 3.14159
দিয়ে ডিফাইন করেছে। যখনই কোডে PI
ব্যবহার করা হবে, এটি 3.14159
দ্বারা রিপ্লেস হবে।
#ifdef
– কন্ডিশনাল কম্পাইলেশন শুরু#ifdef
(if defined) ফাংশনটি কন্ডিশনাল কম্পাইলেশন চালাতে ব্যবহৃত হয়, যা পরীক্ষা করে যে কোনো নির্দিষ্ট ম্যাক্রো ডিফাইন করা হয়েছে কিনা। যদি ডিফাইন করা থাকে, তাহলে কোডের ঐ অংশটি কম্পাইল করা হবে, অন্যথায় কম্পাইল করা হবে না।
#ifdef MACRO_NAME
// কোড
#endif
#include <stdio.h>
#define DEBUG
int main() {
#ifdef DEBUG
printf("Debugging is enabled.\n");
#endif
printf("Program is running.\n");
return 0;
}
এখানে #ifdef DEBUG
চেক করবে যে DEBUG
ম্যাক্রো ডিফাইন করা হয়েছে কিনা। যদি DEBUG
ডিফাইন করা থাকে, তবে printf("Debugging is enabled.")
কমান্ডটি চলবে।
#endif
– কন্ডিশনাল কম্পাইলেশন শেষ#endif
ডিরেকটিভটি #ifdef
, #ifndef
, বা #if
ব্লকের শেষে ব্যবহার করা হয় এবং এটি কন্ডিশনাল কম্পাইলেশন ব্লকটি শেষ করে।
#ifdef MACRO_NAME
// কোড
#endif
এটি #ifdef
বা #if
এর সাথে ব্যবহৃত হয়, এবং কম্পাইলারকে কন্ডিশনাল কোড ব্লকের শেষের সংকেত দেয়।
#include <stdio.h>
#define DEBUG
int main() {
#ifdef DEBUG
printf("Debugging mode is enabled.\n");
#endif
printf("Program is running.\n");
#ifndef RELEASE
printf("Release mode is not enabled.\n");
#endif
return 0;
}
#ifdef DEBUG
: যদি DEBUG
ম্যাক্রো ডিফাইন করা থাকে, তবে Debugging mode is enabled.
মেসেজটি প্রিন্ট হবে।#ifndef RELEASE
: যদি RELEASE
ম্যাক্রো ডিফাইন না করা থাকে, তবে Release mode is not enabled.
মেসেজটি প্রিন্ট হবে।এখানে #define DEBUG
দ্বারা DEBUG
ম্যাক্রো ডিফাইন করা হয়েছে, ফলে #ifdef DEBUG
ব্লকের ভিতরের কোড কম্পাইল হবে।
#define
, #ifdef
, এবং #endif
এর মূল সুবিধা:#ifdef DEBUG
দ্বারা কোডের ডিবাগিং অংশগুলো নির্দিষ্টভাবে চালু বা বন্ধ করা যায়।#define
ব্যবহার করে আপনি কনস্ট্যান্ট ডিফাইন করতে পারেন, যা কোডের অন্য অংশে একই মান ব্যবহার করতে সহায়ক।ডিরেকটিভ | কাজ |
---|---|
#define | একটি সিম্বোলিক নামকে একটি মান বা এক্সপ্রেশন দিয়ে ডিফাইন করা। |
#ifdef | নির্দিষ্ট ম্যাক্রো ডিফাইন করা থাকলে কোড চালানোর জন্য ব্যবহৃত হয়। |
#endif | কন্ডিশনাল কম্পাইলেশন ব্লকটির শেষ। |
এই Preprocessor Directives গুলি সি প্রোগ্রামে কন্ডিশনাল কোড, ডিবাগিং এবং অন্যান্য ফিচারগুলো কার্যকরভাবে পরিচালনা করতে সহায়ক।
common.read_more